home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Libraries / KPlib 1.2.1 / kplib.docs < prev    next >
Encoding:
Text File  |  1994-11-07  |  9.5 KB  |  218 lines  |  [TEXT/R*ch]

  1.    *************************************************************************
  2.    *************************************************************************
  3.    **                                                                     **
  4.    **                   ----====  KPlib v1.2.1 ====----                   **
  5.    **                                                                     **
  6.    **                         a C++ Class Library                         **
  7.    **                                                                     **
  8.    **                          by Keith Pomakis                           **
  9.    **                     kppomaki@jeeves.uwaterloo.ca                    **
  10.    **                                                                     **
  11.    **                            Summer, 1994                             **
  12.    **          Released to the public domain on October 10, 1994          **
  13.    **                                                                     **
  14.    *************************************************************************
  15.    *************************************************************************
  16.  
  17.                            ****  Documentation  ****
  18.  
  19.  
  20. ****************************************************************************
  21. PURPOSE AND HISTORY
  22. ****************************************************************************
  23.  
  24. I know what you're saying to yourself:  "What, another class library?".
  25. Yup, that's exactly what this is.  My thesis work requires me to do a lot
  26. of C++ programming.  The availability of a good class library is a
  27. essential to my work.  However, I didn't want to use any compiler-specific
  28. class libraries because I wanted to insure that my code was portable.  I
  29. didn't want to use a third-party class library for two reasons.  First,  I
  30. couldn't find anything out there that satisfied me, and second, even if I
  31. did, I'd hate the prospect of having to drag around third-party software
  32. with me wherever I went.  I'd rather be my own technical support.  So I
  33. wrote this class library.  So far it has served me very well.  I don't know
  34. how I would survive without it.  It is my hope that, in distributing this
  35. library, others will be able to use what I've put together to increase
  36. their own programming productivity.
  37.  
  38. Unfortunately, I have had no time to develop a good user's manual for the
  39. library.  Furthermore, I haven't had the opportunity to test the library on
  40. a compiler other than g++ 2.6.0.  Since C++ is still in it's pre-standard
  41. days and every compiler tends to be different, it wouldn't surprise me if
  42. many C++ compilers fail to compile the library.
  43.  
  44. As far as the user's manual goes, I believe that the library is fairly
  45. intuitive and self-explanatory.  A programmer should be able to understand
  46. how to use the library merely by perusing the "*.h" files.
  47.  
  48. Perhaps a good user's manual will be a future project of mine.
  49.  
  50. Version 1.0: October 10, 1994
  51.     - first release into the public domain
  52.     - not actually labelled with a version number
  53.  
  54. Version 1.1: October 12, 1994
  55.     - prefix "KP" appended to class and file names to avoid name clashes
  56.       with existing libraries
  57.     - document fleshed out a little more
  58.  
  59. Version 1.2: October 21, 1994:
  60.     - inline max and min functions in KPbasic.h modified to make them
  61.       more general
  62.     - several KPSet fundtions made "const" correct
  63.  
  64. Version 1.2.1: November 7, 1994:
  65.     - fixed a couple of non-g++ incompatibilities, bringing the library
  66.       a little closer to be compilable on other compilers
  67.  
  68. ****************************************************************************
  69. DISCLAIMER
  70. ****************************************************************************
  71.  
  72. I am releasing this library to the public domain.  Therefore, people can use
  73. it, copy it, distribute it, modify it, and do whatever they want with it.
  74.  
  75. Although this library has been well thought out, tested, and used in real
  76. applications, it is not guaranteed to be bug-free.  Therefore, I am not
  77. responsible for anything that happens, either directly or indirectly, due to
  78. the usage of this library.
  79.  
  80. If you modify or add to this library in any way, I'd appreciate it if you
  81. dropped me a line (or Internet packet, whatever) telling me what you did.
  82. I'm always interested in potential improvements to my work!
  83.  
  84. Also, if you find any bugs (gasp!) or have any questions or comments about
  85. the library, you can contact me as well.  My e-mail address, at least until
  86. December, is "kppomaki@jeeves.uwaterloo.ca".  I'd be interested in hearing
  87. what you think!
  88.  
  89. Oh, one other thing... I've put a lot of work into this library, so I'd
  90. appreciate it if you kept my name attached to it when distributing or
  91. modifying it.
  92.  
  93.  
  94. ****************************************************************************
  95. REQUIREMENTS AND COMPATIBILITY
  96. ****************************************************************************
  97.  
  98. This library has not been tested on a compiler other than GNU g++ version
  99. 2.6.0 (a Free Software Foundation project).  I cannot guarantee that it will
  100. compile on other C++ compilers.  However, I tried to keep it as "standard"
  101. as possible, so I am hopeful.
  102.  
  103. The library uses templates quite heavily, but does not make use of exception
  104. handling.
  105.  
  106.  
  107. ****************************************************************************
  108. CONTENTS
  109. ****************************************************************************
  110.  
  111. The library consists of the following classes:
  112.  
  113.     KPList<T>
  114.         A two-way list that assumes nothing about its elements except they
  115.         correctly implement a default constructor and operator=().
  116.  
  117.     KPComparableList<T>
  118.         A subclass of KPList<T> which also assumes its elements can be
  119.         compared with operator==(), thus providing more powerful methods.
  120.  
  121.     KPSortableList<T>
  122.         A subclass of KPComparableList<T> which also assumes its elements
  123.         can be compared with operator<(), thus providing more powerful
  124.         methods.
  125.  
  126.     KPReadOnlyIterator<T>
  127.         An iterator with pointer-like semantics which can iterate over any
  128.         of the above lists for reading purposes only.
  129.  
  130.     KPIterator<T>
  131.         An iterator with pointer-like semantics which can iterate over any
  132.         of the above lists for the purpose of reading, modifying, deleting,
  133.         or adding elements to or from arbitrary locations in the list.
  134.  
  135.     KPArray<T>
  136.         A dynamically-sizablee array that assumes nothing about its
  137.         elements except they correctly implement a default constructor
  138.         and operator=().
  139.  
  140.     KPComparableArray<T>
  141.         A subclass of KPArray<T> which also assumes its elements can be
  142.         compared with operator==(), thus providing more powerful methods.
  143.  
  144.     KPSortableArray<T>
  145.         A subclass of KPComparableArray<T> which also assumes its elements
  146.         can be compared with operator<(), thus providing more powerful
  147.         methods.
  148.  
  149.     KPQueue<T>
  150.         A queue that assumes nothing about its elements except they
  151.         correctly implement a default constructor and operator=().
  152.  
  153.     KPPriorityQueue<T>
  154.         A priority queue that assumes its elements correctly implement
  155.         a default constructor, operator=(), operator==() and operator<().
  156.  
  157.     KPStack<T>
  158.         A stack that assumes nothing about its elements except they
  159.         correctly implement a default constructor and operator=().
  160.  
  161.     KPSet<T>
  162.         A set that assumes its elements correctly implement a default
  163.         constructor, operator=(), operator==() and operator<().  All
  164.         union, intersection and difference operations are of order O(n).
  165.  
  166.     KPString
  167.         A string class which implements basic string functions and more
  168.         (such as tokenizing methods which return List<String>).  This
  169.         class uses reference counting and copy-on-write semantics to
  170.         insure that it as efficient as possible.
  171.  
  172.  
  173. ****************************************************************************
  174. USAGE
  175. ****************************************************************************
  176.  
  177. The library consists of the following files:
  178.  
  179.         KPArray.h
  180.         KPList.h
  181.         KPPriorityQueue.h
  182.         KPQueue.h
  183.         KPSet.h
  184.         KPStack.h
  185.         KPString.cxx
  186.         KPString.h
  187.         KPbasic.h
  188.  
  189. These files should be kept together in a single directory.  The name of each
  190. file directly represents what one would expect of its contents.  The file
  191. "KPbasic.h" contains a few basic functions and definitions that you might
  192. find convenient.
  193.  
  194. All of the classes in this library, except for KPString, are template
  195. classes.  Therefore, it easy to use these classes with your own classes as
  196. well as with all of the predefined data types.  The classes were not written
  197. to be easily derived from.
  198.  
  199. "KPString.cxx" is the only source file of the library.  In order to use this
  200. class it will have to be compiled with the rest of your code.  See the
  201. files in the accompanying "sample_progs" directory to see how this can be
  202. done conveniently.  Alternatively, "KPString.cxx" can be precompiled and
  203. converted to a library archive for standard linking.
  204.  
  205. Since I haven't actually written a user's guide for this library, the "*.h"
  206. files will have to suffice as documentation.
  207.  
  208. That's about it.  Enjoy!
  209.  
  210.  
  211. .------------------------------+--------------------------------------------.
  212. | Keith Pomakis                | Don't take life too seriously.             |
  213. | kppomaki@jeeves.uwaterloo.ca | After all, you'll never make it out alive. |
  214. +------------------------------+--------------------------------------------+
  215. |          WWW home page: "http://csclub.uwaterloo.ca/u/kppomaki/"          |
  216. `---------------------------------------------------------------------------'
  217.  
  218.